<?php


namespace Back\Controller;

use Think\Controller;
use Think\Page;
use Think\Upload;

/**
 * 品牌管理控制器
 * @package Back\Controller
 */
class BrandController extends Controller
{
    /**
     * 批量处理
     */
    public function multiAction()
    {
        $operate = 'delete'; // 默认的动作
        // 判断是否传递了selected中
        $selected = I('post.selected', []);
        if (empty($selected)) {
            // 没有任何的主键值
            // 不需要完成操作
            $operate = '';
        }
        // 有可用的主键值
        // 判断当前的操作类型
        switch ($operate) {
            case 'delete':
                // in条件删除即可
                M('Brand')->where(['brand_id'=>['in', $selected]])->delete();
                break;
        }
        $this->redirect('list');
    }

    public function setAction()
    {

        if (IS_POST) {
            // 获取brand_id, 核心判断依据
            $brand_id = I('post.brand_id', '');
            // 获取模型
            $model = D('Brand');
            // 完成图像的上传
            $upload = new Upload(); // use Think\Upload;
            // 配置工具, 合理的参数
            $upload->rootPath = './Upload/';// 上传根目录
            $upload->savePath = 'Brand/';// 指定的上传逻辑子目录
            $upload->exts = ['gif', 'jpg', 'jpeg', 'png'];
            $upload->maxSize = 1*1024*1024;// 1M
            $logo_info = $upload->uploadOne($_FILES['logo']); // 上传

            // 将需要处理的数据数组中, 传递给模型
            $_POST['logo'] = $logo_info ? ($logo_info['savepath'] . $logo_info['savename']) : '';
            // 编辑时的额外处理
            if ($brand_id) {
                // 编辑时
                if ($_POST['logo']=='') {
                    // 没有上传正确的图像, 不要去将旧图像, 替换
                    unset($_POST['logo']);
                } else {
                    // 上传了新图像, 要删除旧的
                    $logo = $model->getFieldByBrandId($brand_id, 'logo');// 通过Brand_id获取某个字段 field('logo')->where(['brand_id'=>$brand_id]->find()
                    @unlink($upload->rootPath . $logo);
                }
            }

            // 创建数据, 触发 验证, 填充
            if ($model->create()) {
                // 如果创建成功, 则插入或更新数据
                if ($brand_id === '') {
                    // 添加
                    $model->add();
                } else {
                    $model->save();
                }
                // 成功, 回到列表
                $this->redirect('list');
            } else {
                // 错误信息与出错的数据,记录在session中
                session('message', $model->getError());
                session('data', I('post.'));
                // 重定向
                $param = [];
                if($brand_id !== '') {
                    $param['brand_id'] = $brand_id;
                }
                $this->redirect('set', $param);
            }

        } else {
            // 获取brand_id, 核心判断依据
            $brand_id = I('get.brand_id', '');
            // 获取消息
            $message = session('message');
            // 不需要了, 立即删除
            session('message', null);
            // 分配到模板
            $this->assign('message',  $message ? $message : []);

            // 原始错误数据
            $data = session('data');
            session('data', null);
            // 如果session中的出错数据存在, 则不需要通过brand_id
            // 在数据表中查询
            if ($brand_id && !$data) {
                // 根据ID获取数据
                $data = M('Brand')->find($brand_id);
            }
            $this->assign('data', $data ? $data : []);

            // 显示编辑页面
            $this->display();
        }

    }

//    /**
//     * 编辑
//     */
//    public function editAction()
//    {
//        if (IS_POST) {
//            $model = D('Brand');
//            if ($model->create()) {
//                $model->save();
//
//                $this->redirect('list');
//            } else {
//                // 错误信息与出错的数据,记录在session中
//                session('message', $model->getError());
//                session('data', I('post.'));
//                // 重定向
//                $this->redirect('edit', ['brand_id' => I('post.brand_id')]);
//            }
//
//
//
//        } else {
//            // 获取消息
//            $message = session('message');
//            // 不需要了, 立即删除
//            session('message', null);
//            // 分配到模板
//            $this->assign('message',  $message ? $message : []);
//
//            // 原始错误数据
//            $data = session('data');
//            session('data', null);
//            // 如果session中的出错数据存在, 则不需要通过brand_id
//            // 在数据表中查询
//            if (! $data) {
//                $brand_id = I('get.brand_id');
//                // 根据ID获取数据
//                $data = M('Brand')->find($brand_id);
//            }
//            $this->assign('data', $data);
//
//            // 显示编辑页面
//            $this->display();
//        }
//
//    }
//    /**
//     * 添加
//     */
//    public function addAction()
//    {
//        if (IS_POST) { // 是post表单提交
//            $model = D('Brand');
//            // $model->create(), 加载数据. 自动利用_POST数据装载数据, 触发验证, 填充等功能
//            // 模型创建数据是否成功
//            if ($model->create()) {
//                // 执行插入
//                $id = $model->add();
//                // 插入完毕, 进入(重定向)列表
//                $this->redirect('list');
//            } else {
//                // 验证失败, 创建失败
//                // 记录信息, 通过session记录, 错误信息是数组
//                session('message', $model->getError());
//                // 将错误的数据(本次post提交的数据)加入到session
//                session('data', I('post.'));
//                // 重定向到add页面
//                $this->redirect('add'); // $this->error, $this->success
//            }
//
//        } else { // 非post提交
//            // 获取消息
//            $message = session('message');
//            // 不需要了, 立即删除
//            session('message', null);
//            // 分配到模板
//            $this->assign('message',  $message ? $message : []);
//
//            // 原始错误数据
//            $data = session('data');
//            session('data', null);
//            $this->assign('data', $data);
//
//            $this->display();
//        }
//    }
    /**
     * 列表
     */
    public function listAction()
    {
        $model = M('Brand');

        // 条件部分
        $cond = []; // 默认条件
        // 判断是否传递了查询条件, 如果有形成新的条件
        $title = $filter['title'] = I('get.title', '');// 获取title, 默认为''
        if ($title !== '') {// 请求中包含了title, 拼条件
//            $conf['title'] = $title; // title = '$title';
            $cond['title'] = ['like', $title . '%']; // title like '$title%';
        }
        $site = $filter['site'] = I('get.site', '');
        if ($site !== '') {
            $cond['site'] = ['like', '%'.$site.'%'];
        }
        // 再次分配到模板
        $this->assign('filter', $filter);


        // 排序部分
        // 判断用户是否传递了 排序, 否则使用默认值
        $sort['field'] = I('get.field', 'sort_number');
        $sort['type'] = I('get.type', 'asc');
        // 拼凑好的排序字符串
        $order = "`{$sort['field']}` {$sort['type']}";
        // 将当前的排序方式, 分配模板中
        $this->assign('sort', $sort);

        // 分页查询
        // 每页显示的记录数
        $limit = 5;
        // 获取总记录数量
        $total = $model->where($cond)->count();

        // 获取分页Page对象
        $page = new Page($total, $limit);

        // 完成查询
        $rows = $model
                ->where($cond)
                ->order($order)
                ->limit($page->firstRow . ', ' . $limit)
                ->select();
        $this->assign('rows', $rows);

        // 获取翻页的HTML代码
        // 配置显示
        $page->setConfig('header', '显示开始 %PAGE_START% 到 %PAGE_END% 之 %TOTAL_ROW% (总 %TOTAL_PAGE% 页)');
        $page->setConfig('theme', '<div class="col-sm-6 text-left"><ul class="pagination">%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%</ul></div> <div class="col-sm-6 text-right">%HEADER%</div>');
        $page->setConfig('prev', '<');
        $page->setConfig('next', '>');
        $page->setConfig('first', '|<');
        $page->setConfig('last', '>|');

        $page_html = $page->show();
        $this->assign('page_html', $page_html);

        $this->display();
    }




    /**
     * ajax操作
     */
    public function ajaxAction()
    {
        // 验证title数据是否重复
        $title = I('request.title');
        // 标题作为条件检索
        $cond['title'] = $title; // title = '$title'
        // 判断是否存在brand_id
        $brand_id = I('request.brand_id', '');
        if ($brand_id  !== '') { // !==
            $cond['brand_id'] = ['neq', $brand_id]; // brand_id != $brand_id
        }
        // title = '$title' && brand_id != $brand_id
        $row = M('Brand')->where($cond)->find();
        // 如果检索到数据, 则响应false, 否则响应true字符串
        echo $row ? 'false' : 'true';
    }
}